/**合并单元格逻辑处理 
 * 合并单元格后，checkbox选中状态处理
 * 合并单元格后，序号处理
 * 批量设置：选中行只拿第一行的数据进行复制
 * 列表处理：加载数据后加默认标识isSelected，合并单元格后根据唯一键设置isSelected保证拿到正确的选中数据
 * 翻页校验数据：前端校验当前页（好的交互，操作后立马更新数据，数据校验通过自动提交，没有校验通过不会提交），后端验证其他页数据
 * 表格错误数据标红处理：通过class处理+函数处理:class="{ error: validateField(row, 'errorRateStart') }"
 * 使用默认导出组件：默认名字处理，可导出表格处理，自定义文件名
 * 编辑表格时间限制：
 *  * 开始结束时间限制：开始时间限制不能大于结束时间
 *  * 开始结束时间限制：结束时间不能小于开始时间
*/
// 获取合并后的序号，根据分页
export const getOrderByRowIndex = (rowIndex, spanArr, pager) => {
  const { pageNum = 1, pageSize = 100 } = pager
  const baseIndex = (pageNum - 1) * pageSize // 基础索引值

  if (!spanArr || !spanArr.length) {
    // 没有合并行，直接返回序号
    return baseIndex + rowIndex + 1
  }

  // 遍历spanArr数组，找到包含当前行索引的数组
  for (let i = 0; i < spanArr.length; i++) {
    if (spanArr[i].includes(rowIndex)) {
      // 如果是合并行的第一行，返回序号
      if (rowIndex === spanArr[i][0]) {
        return baseIndex + i + 1
      }
      // 如果是被合并的行，返回空字符串
      return ''
    }
  }

  // 如果不在合并组中，返回正常序号
  return baseIndex + rowIndex + 1
}

// 获取合并后的序号
export const getOrderByRowIndex1 = (rowIndex, spanArr) => {
  if (!spanArr.length) return rowIndex
  // 遍历spanArr数组，找到包含当前行索引的数组
  for (let i = 0; i < spanArr.length; i++) {
    if (spanArr[i].includes(rowIndex)) {
      // 如果是合并行的第一行，返回序号
      if (rowIndex === spanArr[i][0]) {
        return i + 1
      }
      // 如果是被合并的行，返回空字符串
      return rowIndex
    }
  }
  return rowIndex
}